using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._CrimeAnalysisandSafetyTools
{
    /// <summary>
    /// <para>Select Layer By Date And Time</para>
    /// <para>Selects records based on date and time ranges or date properties, for example, single date, time range, time period, days of the week, month, or year.</para>
    /// <para>根据日期和时间范围或日期属性（例如，单个日期、时间范围、时间段、星期几、月份或年份）选择记录。</para>
    /// </summary>    
    [DisplayName("Select Layer By Date And Time")]
    public class SelectLayerByDateAndTime : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SelectLayerByDateAndTime()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_layer_or_view">
        /// <para>Input Rows</para>
        /// <para>The data containing a date field to which the selection will be applied.</para>
        /// <para>包含将应用所选内容的日期字段的数据。</para>
        /// </param>
        /// <param name="_selection_type">
        /// <para>Selection Type</para>
        /// <para><xdoc>
        ///   <para>Specifies how the selection will be applied and what will occur if a selection already exists.</para>
        ///   <bulletList>
        ///     <bullet_item>New selection— The resulting selection will replace the current selection. This is the default.</bullet_item><para/>
        ///     <bullet_item>Add to the current selection— The resulting selection will be added to the current selection if one exists. If no selection exists, this is the same as the new selection option.</bullet_item><para/>
        ///     <bullet_item>Remove from the current selection— The resulting selection will be removed from the current selection. If no selection exists, this option has no effect.</bullet_item><para/>
        ///     <bullet_item>Select subset from the current selection— The resulting selection will be combined with the current selection. Only records that are common to both remain selected.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何应用选择，以及如果选择已存在，将发生什么情况。</para>
        ///   <bulletList>
        ///     <bullet_item>新选区 - 生成的选区将替换当前选区。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>添加到当前选区 - 生成的选区将添加到当前选区（如果存在）。如果不存在选择，则这与新的选择选项相同。</bullet_item><para/>
        ///     <bullet_item>从当前选区中删除 - 生成的选区将从当前选区中删除。如果不存在任何选择，则此选项无效。</bullet_item><para/>
        ///     <bullet_item>从当前选区中选择子集 - 生成的选区将与当前选区合并。只有两者共有的记录才会保持选中状态。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_time_type">
        /// <para>Time Type</para>
        /// <para><xdoc>
        ///   <para>Specifies how date and time fields will be used to select records.</para>
        ///   <bulletList>
        ///     <bullet_item>Single Time Field—Records will be selected based on a single time field on the input feature.</bullet_item><para/>
        ///     <bullet_item>Time Range Fields—Records will be selected based on start and end time fields on the input feature.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何使用日期和时间字段来选择记录。</para>
        ///   <bulletList>
        ///     <bullet_item>单个时间字段 - 将根据输入要素上的单个时间字段选择记录。</bullet_item><para/>
        ///     <bullet_item>时间范围字段—将根据输入要素上的开始时间和结束时间字段选择记录。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public SelectLayerByDateAndTime(object _in_layer_or_view, _selection_type_value _selection_type, _time_type_value _time_type)
        {
            this._in_layer_or_view = _in_layer_or_view;
            this._selection_type = _selection_type;
            this._time_type = _time_type;
        }
        public override string ToolboxName => "Crime Analysis and Safety Tools";

        public override string ToolName => "Select Layer By Date And Time";

        public override string CallName => "ca.SelectLayerByDateAndTime";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_layer_or_view, _selection_type.GetGPValue(), _time_type.GetGPValue(), _date_field, _start_date_field, _end_date_field, _selection_options, _date_selection_type.GetGPValue(), _single_date, _start_date, _end_date, _use_system_time.GetGPValue(), _time_slice, _start_time, _end_time, _days_of_week, _months, _years, _out_layer_or_view, _count];

        /// <summary>
        /// <para>Input Rows</para>
        /// <para>The data containing a date field to which the selection will be applied.</para>
        /// <para>包含将应用所选内容的日期字段的数据。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Rows")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_layer_or_view { get; set; }


        /// <summary>
        /// <para>Selection Type</para>
        /// <para><xdoc>
        ///   <para>Specifies how the selection will be applied and what will occur if a selection already exists.</para>
        ///   <bulletList>
        ///     <bullet_item>New selection— The resulting selection will replace the current selection. This is the default.</bullet_item><para/>
        ///     <bullet_item>Add to the current selection— The resulting selection will be added to the current selection if one exists. If no selection exists, this is the same as the new selection option.</bullet_item><para/>
        ///     <bullet_item>Remove from the current selection— The resulting selection will be removed from the current selection. If no selection exists, this option has no effect.</bullet_item><para/>
        ///     <bullet_item>Select subset from the current selection— The resulting selection will be combined with the current selection. Only records that are common to both remain selected.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何应用选择，以及如果选择已存在，将发生什么情况。</para>
        ///   <bulletList>
        ///     <bullet_item>新选区 - 生成的选区将替换当前选区。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>添加到当前选区 - 生成的选区将添加到当前选区（如果存在）。如果不存在选择，则这与新的选择选项相同。</bullet_item><para/>
        ///     <bullet_item>从当前选区中删除 - 生成的选区将从当前选区中删除。如果不存在任何选择，则此选项无效。</bullet_item><para/>
        ///     <bullet_item>从当前选区中选择子集 - 生成的选区将与当前选区合并。只有两者共有的记录才会保持选中状态。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Selection Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _selection_type_value _selection_type { get; set; }

        public enum _selection_type_value
        {
            /// <summary>
            /// <para>New selection</para>
            /// <para>New selection— The resulting selection will replace the current selection. This is the default.</para>
            /// <para>新选区 - 生成的选区将替换当前选区。这是默认设置。</para>
            /// </summary>
            [Description("New selection")]
            [GPEnumValue("NEW_SELECTION")]
            _NEW_SELECTION,

            /// <summary>
            /// <para>Add to the current selection</para>
            /// <para>Add to the current selection— The resulting selection will be added to the current selection if one exists. If no selection exists, this is the same as the new selection option.</para>
            /// <para>添加到当前选区 - 生成的选区将添加到当前选区（如果存在）。如果不存在选择，则这与新的选择选项相同。</para>
            /// </summary>
            [Description("Add to the current selection")]
            [GPEnumValue("ADD_TO_SELECTION")]
            _ADD_TO_SELECTION,

            /// <summary>
            /// <para>Remove from the current selection</para>
            /// <para>Remove from the current selection— The resulting selection will be removed from the current selection. If no selection exists, this option has no effect.</para>
            /// <para>从当前选区中删除 - 生成的选区将从当前选区中删除。如果不存在任何选择，则此选项无效。</para>
            /// </summary>
            [Description("Remove from the current selection")]
            [GPEnumValue("REMOVE_FROM_SELECTION")]
            _REMOVE_FROM_SELECTION,

            /// <summary>
            /// <para>Select subset from the current selection</para>
            /// <para>Select subset from the current selection— The resulting selection will be combined with the current selection. Only records that are common to both remain selected.</para>
            /// <para>从当前选区中选择子集 - 生成的选区将与当前选区合并。只有两者共有的记录才会保持选中状态。</para>
            /// </summary>
            [Description("Select subset from the current selection")]
            [GPEnumValue("SUBSET_SELECTION")]
            _SUBSET_SELECTION,

        }

        /// <summary>
        /// <para>Time Type</para>
        /// <para><xdoc>
        ///   <para>Specifies how date and time fields will be used to select records.</para>
        ///   <bulletList>
        ///     <bullet_item>Single Time Field—Records will be selected based on a single time field on the input feature.</bullet_item><para/>
        ///     <bullet_item>Time Range Fields—Records will be selected based on start and end time fields on the input feature.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何使用日期和时间字段来选择记录。</para>
        ///   <bulletList>
        ///     <bullet_item>单个时间字段 - 将根据输入要素上的单个时间字段选择记录。</bullet_item><para/>
        ///     <bullet_item>时间范围字段—将根据输入要素上的开始时间和结束时间字段选择记录。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _time_type_value _time_type { get; set; }

        public enum _time_type_value
        {
            /// <summary>
            /// <para>Single Time Field</para>
            /// <para>Single Time Field—Records will be selected based on a single time field on the input feature.</para>
            /// <para>单个时间字段 - 将根据输入要素上的单个时间字段选择记录。</para>
            /// </summary>
            [Description("Single Time Field")]
            [GPEnumValue("SINGLE_TIME_FIELD")]
            _SINGLE_TIME_FIELD,

            /// <summary>
            /// <para>Time Range Fields</para>
            /// <para>Time Range Fields—Records will be selected based on start and end time fields on the input feature.</para>
            /// <para>时间范围字段—将根据输入要素上的开始时间和结束时间字段选择记录。</para>
            /// </summary>
            [Description("Time Range Fields")]
            [GPEnumValue("TIME_RANGE_FIELDS")]
            _TIME_RANGE_FIELDS,

        }

        /// <summary>
        /// <para>Date Field</para>
        /// <para>The date field from the input layer on which the selection will be based. This parameter is only active if the Time Type parameter is set to Single Time Field.</para>
        /// <para>选择将基于的输入图层中的日期字段。仅当“时间类型”参数设置为“单个时间字段”时，此参数才处于活动状态。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _date_field { get; set; } = null;


        /// <summary>
        /// <para>Start Date Field</para>
        /// <para>The start date field from the time range on which the selection will be based. This parameter is only active if the Time Type parameter is set to Time Range Fields .</para>
        /// <para>选择所基于的时间范围中的开始日期字段。仅当“时间类型”参数设置为“时间范围字段”时，此参数才处于活动状态。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Start Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _start_date_field { get; set; } = null;


        /// <summary>
        /// <para>End Date Field</para>
        /// <para>The end date field from the time range on which the selection will be based. This parameter is only active if the Time Type parameter is set to Time Range Fields.</para>
        /// <para>选择所基于的时间范围中的结束日期字段。仅当“时间类型”参数设置为“时间范围字段”时，此参数才处于活动状态。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("End Date Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _end_date_field { get; set; } = null;


        /// <summary>
        /// <para>Selection Options</para>
        /// <para><xdoc>
        ///   <para>Specifies how date and time selections will be made.</para>
        ///   <bulletList>
        ///     <bullet_item>Date—The selection will be by date.</bullet_item><para/>
        ///     <bullet_item>Time—The selection will be by time of day.</bullet_item><para/>
        ///     <bullet_item>Day of week—The selection will be by day of the week.</bullet_item><para/>
        ///     <bullet_item>Month—The selection will be by month.</bullet_item><para/>
        ///     <bullet_item>Year—The selection will be by year.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何选择日期和时间。</para>
        ///   <bulletList>
        ///     <bullet_item>日期 - 选择将按日期进行。</bullet_item><para/>
        ///     <bullet_item>时间—选择将按一天中的时间进行。</bullet_item><para/>
        ///     <bullet_item>星期几 - 选择将按星期几进行。</bullet_item><para/>
        ///     <bullet_item>月份 - 选择将按月进行。</bullet_item><para/>
        ///     <bullet_item>年份 - 选择将按年份进行。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Selection Options")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _selection_options { get; set; } = null;


        /// <summary>
        /// <para>Date Selection Type</para>
        /// <para><xdoc>
        ///   <para>Specifies whether records will be selected based on a date range, singular date, recency period, or comparative time period.</para>
        ///   <para>This parameter is only active when the Selection Options parameter is set to Date.</para>
        ///   <bulletList>
        ///     <bullet_item>By Date Range—Records will be selected based on a start and end date range.</bullet_item><para/>
        ///     <bullet_item>By Single Date—Records will be selected based on the date specified.</bullet_item><para/>
        ///     <bullet_item>By Recency—Records will be selected based on a time period in relation to the current date (system date and time), for example, within the last 14 days.</bullet_item><para/>
        ///     <bullet_item>By Comparative Time Period—Records will be selected based on the time period immediately preceding a recent time period in relation to the current date (system date and time). For example, if the current date is January 29 and the time slice is 14 days, records occurring between January 1 and January 14 will be selected. This option can be used in combination with a subsequent By Recency (RECENCY in Python) selection to compare record counts between two adjacent time periods (for example, the two 14-day time periods of January 1–14 and January 15–28).</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否根据日期范围、单一日期、新近期或比较时间段选择记录。</para>
        ///   <para>仅当“选择选项”参数设置为“日期”时，此参数才处于活动状态。</para>
        ///   <bulletList>
        ///     <bullet_item>按日期范围 - 将根据开始日期和结束日期范围选择记录。</bullet_item><para/>
        ///     <bullet_item>按单个日期 - 将根据指定的日期选择记录。</bullet_item><para/>
        ///     <bullet_item>按新近度 - 将根据与当前日期（系统日期和时间）相关的时间段（例如，过去 14 天内）选择记录。</bullet_item><para/>
        ///     <bullet_item>按比较时间段 - 将根据与当前日期（系统日期和时间）相关的最近时间段之前的时间段选择记录。例如，如果当前日期为 1 月 29 日，时间片为 14 天，则将选择 1 月 1 日至 1 月 14 日之间发生的记录。此选项可以与后续的“按新近度”（Python 中的 ENCY）选项结合使用，以比较两个相邻时间段（例如，1 月 1 日至 14 日和 1 月 15 日至 28 日这两个 14 天时间段）之间的记录计数。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Date Selection Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _date_selection_type_value? _date_selection_type { get; set; } = null;

        public enum _date_selection_type_value
        {
            /// <summary>
            /// <para>By Date Range</para>
            /// <para>By Date Range—Records will be selected based on a start and end date range.</para>
            /// <para>按日期范围 - 将根据开始日期和结束日期范围选择记录。</para>
            /// </summary>
            [Description("By Date Range")]
            [GPEnumValue("DATE_RANGE")]
            _DATE_RANGE,

            /// <summary>
            /// <para>By Single Date</para>
            /// <para>By Single Date—Records will be selected based on the date specified.</para>
            /// <para>按单个日期 - 将根据指定的日期选择记录。</para>
            /// </summary>
            [Description("By Single Date")]
            [GPEnumValue("SINGLE_DATE")]
            _SINGLE_DATE,

            /// <summary>
            /// <para>By Recency</para>
            /// <para>By Recency—Records will be selected based on a time period in relation to the current date (system date and time), for example, within the last 14 days.</para>
            /// <para>按新近度 - 将根据与当前日期（系统日期和时间）相关的时间段（例如，过去 14 天内）选择记录。</para>
            /// </summary>
            [Description("By Recency")]
            [GPEnumValue("RECENCY")]
            _RECENCY,

            /// <summary>
            /// <para>By Comparative Time Period</para>
            /// <para>By Comparative Time Period—Records will be selected based on the time period immediately preceding a recent time period in relation to the current date (system date and time). For example, if the current date is January 29 and the time slice is 14 days, records occurring between January 1 and January 14 will be selected. This option can be used in combination with a subsequent By Recency (RECENCY in Python) selection to compare record counts between two adjacent time periods (for example, the two 14-day time periods of January 1–14 and January 15–28).</para>
            /// <para>按比较时间段 - 将根据与当前日期（系统日期和时间）相关的最近时间段之前的时间段选择记录。例如，如果当前日期为 1 月 29 日，时间片为 14 天，则将选择 1 月 1 日至 1 月 14 日之间发生的记录。此选项可以与后续的“按新近度”（Python 中的 ENCY）选项结合使用，以比较两个相邻时间段（例如，1 月 1 日至 14 日和 1 月 15 日至 28 日这两个 14 天时间段）之间的记录计数。</para>
            /// </summary>
            [Description("By Comparative Time Period")]
            [GPEnumValue("COMPARATIVE")]
            _COMPARATIVE,

        }

        /// <summary>
        /// <para>Date</para>
        /// <para><xdoc>
        ///   <para>The single date and time to be selected.</para>
        ///   <para>This parameter is only active when the Date Selection Type parameter is set to By Single Date.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要选择的单个日期和时间。</para>
        ///   <para>仅当“日期选择类型”参数设置为“按单个日期”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Date")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _single_date { get; set; } = null;


        /// <summary>
        /// <para>Start Date</para>
        /// <para><xdoc>
        ///   <para>The start date of the date range.</para>
        ///   <para>This parameter is only active when the Date Selection Type parameter is set to By Date Range.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>日期范围的开始日期。</para>
        ///   <para>仅当“日期选择类型”参数设置为“按日期范围”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Start Date")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _start_date { get; set; } = null;


        /// <summary>
        /// <para>End Date</para>
        /// <para><xdoc>
        ///   <para>The end date of the date range.</para>
        ///   <para>This parameter is only active when the Date Selection Type parameter is set to By Date Range.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>日期范围的结束日期。</para>
        ///   <para>仅当“日期选择类型”参数设置为“按日期范围”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("End Date")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _end_date { get; set; } = null;


        /// <summary>
        /// <para>Use Current System time as End Time</para>
        /// <para><xdoc>
        ///   <para>Specifies whether records from the current day (local system time) will be included in the selection if they exist in the recent time period.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Records from the current day will be included in the selection.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Records from the current day will not be included in the selection.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>For example, the time slice specified is 14 days, the local system time is 5:00 p.m on January 15 when the tool executes, the recency time period includes all records between 5:00 p.m. on the date 14 days ago and 5:00 p.m. on the day the tool is executed, and this parameter is checked. In this example, the selection will be January 1, 2017 5:00:00 PM to January 15, 2017 5:00:00 PM for the 14-day time slice. Using this same example with this parameter unchecked, the recent period uses the beginning of the current day as the end time (based on local system time). In this case, the selection will be January 1, 2017 12:00:00 AM to January 15, 12:00:00 AM for the 14-day time slice.</para>
        ///   <para>This parameter is only active when the Date Selection Type parameter is set to By Comparative Time Period or By Recency.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定当前日期（本地系统时间）的记录是否将包含在选择中（如果这些记录存在于最近时间段内）。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 选择中将包括当天的记录。</bullet_item><para/>
        ///     <bullet_item>未选中 - 当天的记录将不包括在选择中。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>例如，指定的时间片为 14 天，本地系统时间为工具执行时的 1 月 15 日下午 5：00，新近时间段包括 14 天前的日期下午 5：00 到工具执行当天的下午 5：00 之间的所有记录，并选中该参数。在此示例中，对于 14 天的时间片，选择的日期为 2017 年 1 月 1 日下午 5：00：00 至 2017 年 1 月 15 日下午 5：00：00。使用未选中此参数的同一示例，最近一段时间使用当天的开始时间作为结束时间（基于本地系统时间）。在这种情况下，对于 14 天的时间片，选择的时间为 2017 年 1 月 1 日凌晨 12：00：00 至 1 月 15 日凌晨 12：00：00。</para>
        ///   <para>仅当日期选择类型参数设置为“按比较时间段”或“按新近度”时，此参数才有效。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use Current System time as End Time")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _use_system_time_value _use_system_time { get; set; } = _use_system_time_value._false;

        public enum _use_system_time_value
        {
            /// <summary>
            /// <para>SYSTEM_TIME</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SYSTEM_TIME")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_SYSTEM_TIME</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_SYSTEM_TIME")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Time Slice</para>
        /// <para><xdoc>
        ///   <para>The number of time units (minutes, hours, days, weeks, months, or years) defining the recent time period on which the selection will be based, for example, events within the last 14 days.</para>
        ///   <para>This parameter is only active when the Date Selection Type parameter is set to By Comparative Time Period or By Recency.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义选择所基于的最近时间段的时间单位数（分钟、小时、天、周、月或年），例如，过去 14 天内的事件。</para>
        ///   <para>仅当日期选择类型参数设置为“按比较时间段”或“按新近度”时，此参数才有效。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Slice")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_slice { get; set; } = null;


        /// <summary>
        /// <para>Start Time</para>
        /// <para><xdoc>
        ///   <para>The start time of the time range.</para>
        ///   <para>This parameter is only active when the Selection Options parameter is set to Time.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>时间范围的开始时间。</para>
        ///   <para>仅当“选择选项”参数设置为“时间”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Start Time")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _start_time { get; set; } = null;


        /// <summary>
        /// <para>End Time</para>
        /// <para><xdoc>
        ///   <para>The end time of the time range.</para>
        ///   <para>This parameter is only active when the Selection Options parameter is set to Time.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>时间范围的结束时间。</para>
        ///   <para>仅当“选择选项”参数设置为“时间”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("End Time")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _end_time { get; set; } = null;


        /// <summary>
        /// <para>Days of Week</para>
        /// <para><xdoc>
        ///   <para>Specifies the days of the week used to select records.</para>
        ///   <bulletList>
        ///     <bullet_item>Monday—Records occurring on Monday will be selected.</bullet_item><para/>
        ///     <bullet_item>Tuesday—Records occurring on Tuesday will be selected.</bullet_item><para/>
        ///     <bullet_item>Wednesday—Records occurring on Wednesday will be selected.</bullet_item><para/>
        ///     <bullet_item>Thursday—Records occurring on Thursday will be selected.</bullet_item><para/>
        ///     <bullet_item>Friday—Records occurring on Friday will be selected.</bullet_item><para/>
        ///     <bullet_item>Saturday—Records occurring on Saturday will be selected.</bullet_item><para/>
        ///     <bullet_item>Sunday—Records occurring on Sunday will be selected.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only active when the Selection Options parameter is set to Day of week.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于选择记录的星期几。</para>
        ///   <bulletList>
        ///     <bullet_item>星期一 - 将选择星期一发生的记录。</bullet_item><para/>
        ///     <bullet_item>星期二 - 将选择星期二发生的记录。</bullet_item><para/>
        ///     <bullet_item>星期三 - 将选择星期三发生的记录。</bullet_item><para/>
        ///     <bullet_item>星期四 - 将选择星期四发生的记录。</bullet_item><para/>
        ///     <bullet_item>星期五 - 将选择星期五发生的记录。</bullet_item><para/>
        ///     <bullet_item>星期六—将选择星期六发生的记录。</bullet_item><para/>
        ///     <bullet_item>星期日 - 将选择星期日发生的记录。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>仅当“选择选项”参数设置为“星期几”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Days of Week")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _days_of_week { get; set; } = null;


        /// <summary>
        /// <para>Months</para>
        /// <para><xdoc>
        ///   <para>Specifies the months used to select records.</para>
        ///   <bulletList>
        ///     <bullet_item>January—Records occurring in January will be selected.</bullet_item><para/>
        ///     <bullet_item>February—Records occurring in February will be selected.</bullet_item><para/>
        ///     <bullet_item>March—Records occurring in March will be selected.</bullet_item><para/>
        ///     <bullet_item>April—Records occurring in April will be selected.</bullet_item><para/>
        ///     <bullet_item>May—Records occurring in May will be selected.</bullet_item><para/>
        ///     <bullet_item>June—Records occurring in June will be selected.</bullet_item><para/>
        ///     <bullet_item>July—Records occurring in July will be selected.</bullet_item><para/>
        ///     <bullet_item>August—Records occurring in August will be selected.</bullet_item><para/>
        ///     <bullet_item>September—Records occurring in September will be selected.</bullet_item><para/>
        ///     <bullet_item>October—Records occurring in October will be selected.</bullet_item><para/>
        ///     <bullet_item>November—Records occurring in November will be selected.</bullet_item><para/>
        ///     <bullet_item>December—Records occurring in December will be selected.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only active when the Selection Options parameter is set to Month.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于选择记录的月份。</para>
        ///   <bulletList>
        ///     <bullet_item>1 月 - 将选择 1 月份发生的记录。</bullet_item><para/>
        ///     <bullet_item>2 月 - 将选择 2 月份发生的记录。</bullet_item><para/>
        ///     <bullet_item>3 月 - 将选择 3 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>4 月 - 将选择 4 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>5 月 - 将选择 5 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>6 月 - 将选择 6 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>7 月 - 将选择 7 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>8 月 - 将选择 8 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>9 月 - 将选择 9 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>10 月 - 将选择 10 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>11 月 - 将选择 11 月发生的记录。</bullet_item><para/>
        ///     <bullet_item>12 月 - 将选择 12 月发生的记录。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>仅当“选择选项”参数设置为“月”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Months")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _months { get; set; } = null;


        /// <summary>
        /// <para>Years</para>
        /// <para><xdoc>
        ///   <para>Specifies the years used to select records.</para>
        ///   <para>This parameter is only active when the Selection Options parameter is set to Years.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于选择记录的年份。</para>
        ///   <para>仅当“选择选项”参数设置为“年”时，此参数才处于活动状态。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Years")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _years { get; set; } = null;


        /// <summary>
        /// <para>Updated Layer or Table View</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Layer or Table View")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_layer_or_view { get; set; }


        /// <summary>
        /// <para>Row Count</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Row Count")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public long? _count { get; set; }


        public SelectLayerByDateAndTime SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}